package cn.buaa.anniversary.service;

import cn.buaa.anniversary.Utils.ImgUtil;
import cn.buaa.anniversary.helper.ImgHelper;
import cn.buaa.anniversary.model.Point;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.*;

/**
 * Created this one by HMH on 2017/10/24.
 */
@Service
public class ImgService {

    /**
     * 生成问候的图片
     * @param name 发起人姓名
     * @param template 底板文件
     * @param QR qr文件
     * @return 合成图像文件
     * @throws IOException 读写异常
     */
    public File createGreetImgWithName(String name, File template, File QR) throws IOException {
        //拼接姓名为 - name - 样式
        String text = "－  " + name + "  －";
        //添加中文符号
        java.util.List<Character> includeChineseChars = new ArrayList<>();
        includeChineseChars.add('－');
        //根据中英文字母和图片宽度转化成文字左上角坐标
        int x = ImgHelper.computeTextPointForCenter(picWidth, text, fontSize, includeChineseChars);
        //设置字体，没有选择设置底板、qr、保存文件路径的重载方法，因为没有在helper中检查文件异常，此处选择手动生成
        BufferedImage result = ImgHelper.magic(template, text, QR, /*"Songti TC Bold"*/"Heiti TC Light", fontSize, new Color(255, 255, 255), new Point(x, nameY), new Point(qrX, qrY), zoom);
        //生成文件
        File resultFile = new File(resultDir + "/" + new Date().getTime() + new Random().nextInt() + ".png");
        return ImgUtil.savePng(result, resultFile);
    }

    //存储结果的文件夹
    @Value("${buaa.static.greet.result.dir}")
    public String resultDir;

    //图片宽度
    @Value("${buaa.pic.width}")
    public int picWidth;

    //字体大小
    @Value("${buaa.pic.fontSize}")
    public int fontSize;

    //二维码放置左上角坐标X
    @Value("${buaa.pic.qr.x}")
    public int qrX;

    //二维码放置左上角坐标Y
    @Value("${buaa.pic.qr.y}")
    public int qrY;

    //姓名放置的左上角坐标Y
    @Value("${buaa.pic.name.y}")
    public int nameY;

    //二维码缩放比例
    @Value("${buaa.pic.qr.zoom}")
    public double zoom;

}
